public class Solution {
    // 涉及到判断位的情况或者是位位运算不要想着把10进制转化为二进制：因为底层就是二进制
    public int[] singleNumber(int[] nums) {
        int num = 0;
        for (int n : nums) {
            num ^= n;
        }
        int div = 1;
        while ((num & div) == 0) {  // 注意判断位为1的方法
            div <<= 1;
        }
        int a = 0, b = 0;
        for (int n : nums) {
            if ((n & div) != 0) {
                a ^= n;
            } else {
                b ^= n;
            }
        }
        return new int[]{a,b};

    }
}
